package com.k2data.k2app.domain.po;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.k2data.k2app.constant.Constant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.time.LocalDateTime;

/**
 * 设备分析任务
 * [和数据库表对应,持久化后的po]
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Table(name = "task")
public class TaskDO {

    @Id
    @GeneratedValue(generator = "JDBC")
    private Long id;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 任务类型
     */
    private String taskType;

    /**
     * 模板模型
     */
    private Long modelId;

    /**
     * 关联模型名称
     */
    private Long modelIdCopy;


    /**
	 *设备部件
     */
    private String deviceParts;

    /**
	 * 生效时间
     */
    @JsonFormat(pattern = Constant.ISO_FORMAT)
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    private LocalDateTime startDate;

    /**
	 * 失效时间
     */
    @JsonFormat(pattern = Constant.ISO_FORMAT)
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    private LocalDateTime endDate;

    /**
	 * 启动频率
     */
    private String frequency;

    /**
	 * 任务描述
     */
    private String details;

    /**
	 * 结果通知
     */
    private String action;

    /**
	 * 输出结果
     */
    private String result;
    /**
     * 测点变量
     */
    private String kmxVariableName;

    /**
     * 统计字段
     */
    private String kmxSumField;

    /**
     * 输出结果
     */
    private String deviceType;

    /**
     * 客户id
     */
    private Long customerId;

    /**
     * 标志
     */
    private Integer dealFlag;

    /**
     * 计算量指标名称
     */
    String analysisParamName;
    /**
     * 计算量指标值
     */
    String analysisParamValue;

    /**
     * 关联表
     */
    @Transient
    private Long deviceId;
}